#include <stdio.h>
#include <unistd.h>
#include <string.h>

#include "common.h"

#define STR_N 101
#define STR_BLOCK_N 5

#define MAX_LENGTH 100
#define NUM_STRINGS 10

// 读
void ch_read(FILE *fp)
{
    if (isFiles(fp))
    {
        char ch;
        ch = fgetc(fp);
        if (ch == EOF)
        {
            printf("\033[47;31m 提示: 读取完毕   \033[0m \n");
        }
        else
        {
            printf("值: %c  \n", ch);
        }
    }
}

// 写
void ch_write(FILE *fp)
{
    char ch;
    fflush(stdin); // 清除缓存
    printf("写入:");
    scanf("%c", &ch);
    fputc(ch, fp);
}

// 循环读取
void for_ch_read(FILE *fp)
{
    char ch;
    printf("值:");
    while ((ch = fgetc(fp)) != EOF)
    {
        putchar(ch);
    }
    putchar('\n');
}

void str_read(FILE *fp)
{
    char str[STR_N];
    while (fgets(str, STR_N, fp) != NULL)
    {
        printf("值:%s", str);
    }
}

void str_write(FILE *fp)
{
    char str[STR_N];
    printf("请输入:");
    fflush(stdin);
    scanf("%s", str);
    if (fputs(str, fp) != EOF)
    {
        printf("写入成功 \n");
    }
    else
    {
        printf("\033[47;31m 错误: 写入失败 %s \033[0m \n", FILE_URL);
    }
}

void block_read(FILE *fp)
{
    // char *str[10];
    // int i, size = sizeof(int);
    // printf("请输入:");
    // fflush(stdin);
    // for (i = 0; i < STR_BLOCK_N; i++)
    // {
    //     scanf("%s", &str[i]);
    // }
    // printf("%s", str);
    if (fp != NULL)
    {
        return;
    }
    return;
    // fread(str, size, STR_BLOCK_N, fp);
}

void block_write(FILE *fp)
{
    int N = 5;

    if (fp == NULL)
    {
        return;
    }
    //从键盘输入的数据放入a，从文件读取的数据放入b
    int a[N], b[N];
    int i, size = sizeof(int);
    printf("请输入:");
    //从键盘输入数据 并保存到数组a
    for (i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
    }
    //将数组a的内容写入到文件
    fwrite(a, size, N, fp);

    //将文件中的位置指针重新定位到文件开头
    rewind(fp);
    //从文件读取内容并保存到数组b
    fread(b, size, N, fp);
    printf("值:");
    //在屏幕上显示数组b的内容
    for (i = 0; i < N; i++)
    {
        printf("%d ", b[i]);
    }
    printf("\n");
}
